#ifndef _OUTPUT_WRITER_BOX_H_JM_20110828_
#define _OUTPUT_WRITER_BOX_H_JM_20110828_

#include <iostream>

#include "GenericBoxModel.h"
#include "../table/JoinContext.h"

namespace jm4bbx {
//
//template<class KeyType>
//class OutputWriterBox : public bobox::basic_box2 {
//public:
//    enum { INPUT_GROUP = 0 };
//    enum { INPUT_COLUMN_1 = 0, INPUT_COLUMN_2 = 1 };
//    enum { OUTPUT = 0 };
//
//    typedef InputTablesContext<KeyType> ContextType;
//	typedef GenericBoxModel<OutputWriterBox,  ContextType > model;
//
//	OutputWriterBox(bobox::box_id_type id, bobox::box_tid_type tid, bobox::request *req, 
//        const bobox::parameters &params, ContextType* context) : 
//        bobox::basic_box2(id, tid, req), context_(context) { }
//
//	virtual void init_impl() {
//		add_group(group_index_type(INPUT_GROUP), bobox::column_index_type(INPUT_COLUMN_1), 
//            get_input_descriptors(bobox::inarc_index_type(INPUT_COLUMN_1)));
//
//		receive(bobox::inarc_index_type(INPUT_COLUMN_1), group_index_type(INPUT_GROUP));
//	}
//
//	virtual void sync_mach_etwas() {
//
//        const group& g = get_group(group_index_type(INPUT_GROUP));
//	    if (g.poisoned_) {
//            send_poisoned(bobox::outarc_index_type(OUTPUT));
//            return;
//        }
//
//		//for (; g.rdpos_ < g.rdend_; ++g.rdpos_) {
//		//		int i = get_data<bobox::int_policy>(bobox::column_index_type(INPUT_COLUMN_1))[g.rdpos_];
//  //              print(context_->table1_.getLine(i), "|| ");
//  //              int j = get_data<bobox::int_policy>(bobox::column_index_type(INPUT_COLUMN_2))[g.rdpos_];
//  //              print(context_->table2_.getLine(j));                
//		//}
//  //       std::cout << "---------------------------------------------------------------- "<< std::endl;
//        receive(bobox::inarc_index_type(INPUT_COLUMN_1), group_index_type(INPUT_GROUP));
//	}
//
//    
//    static void print(const typename ContextType::InputTableType::CellContainer& container, const char* end = "\n") {
//        std::string line("");
//        for (size_t cell = 0; cell < container.size(); ++cell) {
//            line += std::string("[") + container[cell] +  "]   ";
//        }
//
//        line += end;
//        std::cout << line.c_str();
//    }
//
//protected:
//    ContextType* context_;
//
//};

} // namespace jm4bbx



#endif
